Overview
En esta página, puedes ver ejemplos de código copiables que muestran cómo administrar diferentes tipos de índices utilizando el driver C.
Tip
Para obtener más información sobre el trabajo con índices, consulte el índice guide. Para obtener más información sobre cualquiera de los índices mostrados en esta página, consulta el enlace proporcionado en cada sección.
Para utilizar un ejemplo de esta página, copie el ejemplo de código en el
aplicación de muestra o su propia aplicación. Asegúrese de reemplazar todos los marcadores de posición en los ejemplos de código, como <connection string URI>, con los valores relevantes para tu implementación de MongoDB.
Aplicación de muestra
Puede utilizar la siguiente aplicación de muestra para probar los ejemplos de código en esta página. Para usar la aplicación de muestra, siga los siguientes pasos:
Asegúrate de tener instalado el controlador C.
Copia el siguiente código y pégalo en un nuevo archivo
.c.Copia un ejemplo de código de esta página y pégalo en las líneas especificadas del archivo.
1 2 3 4 5 int 6 main(void) 7 { 8 bson_error_t error; 9 10 mongoc_init(); 11 12 mongoc_client_t *client = mongoc_client_new("<connection string URI>"); 13 mongoc_collection_t *collection = mongoc_client_get_collection(client, "<database name>", "collection name"); 14 15 // Start example code here 16 17 // End example code here 18 19 mongoc_collection_destroy(collection); 20 mongoc_client_destroy(client); 21 mongoc_cleanup(); 22 23 return EXIT_SUCCESS; 24 }
Índice de un solo campo
El siguiente ejemplo crea un índice ascendente en el campo especificado:
bson_t *keys = BCON_NEW("<field name>", BCON_INT32(1)); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Para obtener más información sobre los índices de campo único, consulta la guía de Índices de campo único.
Índice compuesto
El siguiente ejemplo crea un índice compuesto de dos índices ascendentes en los campos especificados:
bson_t *keys = BCON_NEW("<field name 1>", BCON_INT32(1), "<field name 2>", BCON_INT32(1)); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Para aprender más sobre índices compuestos, consulta la guía de Índices compuestos.
Multikey Index
El siguiente ejemplo crea un índice multiclave ascendente en el campo especificado que tiene valores de tipo arreglo:
bson_t *keys = BCON_NEW("<array field name>", BCON_INT32(1)); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Para obtener más información sobre los índices multiclave, consulta la guía de índices multiclave.
Índice geoespacial
El siguiente ejemplo crea un 2índice dsphere en el campo especificado que contiene objetos GeoJSON:
bson_t *keys = BCON_NEW("<GeoJSON object field name>", BCON_UTF8("2dsphere")); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Para obtener más información sobre el tipo de datos GeoJSON, consulte Objetos GeoJSON en el manual del Servidor de MongoDB.
índice único
El siguiente ejemplo crea un índice único ascendente en el campo especificado:
bson_t *keys = BCON_NEW("title", BCON_INT32(1)); bson_t *opts = BCON_NEW("unique", BCON_BOOL(true)); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, opts); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); bson_destroy(opts); mongoc_index_model_destroy(index_model);
índice comodín
El siguiente ejemplo crea un índice comodín ascendente en la colección especificada:
bson_t *keys = BCON_NEW("$**", BCON_INT32(1)); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Índice del clúster
El siguiente ejemplo crea una nueva colección con un índice clúster ascendente en el campo _id:
bson_t *opts = BCON_NEW("clusteredIndex", "{", "key", "{", "_id", BCON_INT32(1), "}", "unique", BCON_BOOL(true), "}"); mongoc_database_t *database = mongoc_client_get_database(client, "<database name>"); if (mongoc_database_create_collection(database, "<collection name>", opts, &error)) { printf("Successfully created collection\n"); } else { fprintf(stderr, "Failed to create collection: %s", error.message); } mongoc_database_destroy(database); bson_destroy(opts);
Text Index
El siguiente ejemplo crea un índice de texto en el campo de string especificado:
bson_t *keys = BCON_NEW("<field name>", BCON_UTF8("text")); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Borrar un Índice
El siguiente ejemplo borra un índice con el nombre especificado:
if (mongoc_collection_drop_index(collection, "<index name>", &error)) { printf("Successfully dropped index\n"); } else { fprintf(stderr, "Failed to drop index: %s", error.message); }
Para obtener más información sobre cómo remover índices, consulte Remover un índice en la guía Trabajar con índices.
Gestión de índices de MongoDB Search
Las siguientes secciones contienen ejemplos de código que describen cómo gestionar los índices de MongoDB Search.
Para obtener más información sobre los índices de búsqueda de MongoDB, consulta la guía Índices de búsqueda de MongoDB.
Crear índice de búsqueda
El siguiente ejemplo crea un índice de búsqueda de MongoDB en el campo especificado:
bson_t cmd; char *cmd_str = bson_strdup_printf( BSON_STR({ "createSearchIndexes" : "%s", "indexes" : [ {"definition" : {"mappings" : {"dynamic" : false}}, "name" : "<index name>"} ] }), "<collection name>"); bson_init_from_json(&cmd, cmd_str, -1, &error); bson_free(cmd_str); if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) { printf("Successfully created search index\n"); } else { fprintf(stderr, "Failed to create search index: %s", error.message); } bson_destroy(&cmd);
Para obtener más información sobre cómo crear índices de búsqueda, consulte la guía Crear un índice de búsqueda.
listSearchIndexes
El siguiente ejemplo imprime una lista de los índices de búsqueda de MongoDB en la colección especificada:
bson_t pipeline; const bson_t *doc; const char *pipeline_str = BSON_STR({"pipeline" : [ {"$listSearchIndexes" : {}} ]}); bson_init_from_json(&pipeline, pipeline_str, -1, &error); mongoc_cursor_t *cursor = mongoc_collection_aggregate(collection, MONGOC_QUERY_NONE, &pipeline, NULL, NULL); while (mongoc_cursor_next(cursor, &doc)) { char *str = bson_as_canonical_extended_json(doc, NULL); printf("%s\n", str); bson_free(str); } bson_destroy(&pipeline); mongoc_cursor_destroy(cursor);
Para obtener más información sobre cómo listar índices de búsqueda, consulta la guía Listar índices de búsqueda.
Actualizar índices de búsqueda
El siguiente ejemplo actualiza un índice existente de MongoDB Search con la nueva definición de índice especificada:
bson_t cmd; char *cmd_str = bson_strdup_printf( BSON_STR({ "updateSearchIndex" : "%s", "definition" : {"mappings" : {"dynamic" : true}}, "name" : "<index name>"}), "<collection name>"); bson_init_from_json(&cmd, cmd_str, -1, &error); bson_free(cmd_str); if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) { printf("Successfully updated search index\n"); } else { fprintf(stderr, "Failed to create search index: %s", error.message); } bson_destroy(&cmd);
Para obtener más información sobre la actualización de índices de búsqueda, consulta la guía Actualizar un índice de búsqueda.
Eliminar índices de búsqueda
El siguiente ejemplo elimina un índice de búsqueda de MongoDB con el nombre especificado:
bson_t cmd; char *cmd_str = bson_strdup_printf( BSON_STR({ "dropSearchIndexes" : "%s", "index" : "<index name>" }), "<collection name>"); bson_init_from_json(&cmd, cmd_str, -1, &error); if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) { printf("Successfully deleted search index\n"); } else { fprintf(stderr, "Failed to delete search index: %s", error.message); } bson_destroy(&cmd);
Para obtener más información sobre cómo eliminar índices de búsqueda, consulta la guía Eliminar un índice de búsqueda.